package controllers

import (
	"gitee.com/small_fish_official_net/beego_frame/bash"
	"gitee.com/small_fish_official_net/beego_frame/models/data"
	"github.com/astaxie/beego"
)

// 网站首页的路由信息
func (c *Admin) Index() {
}

// 后台主要页面
func (c *Admin) IndexMain() {
	// 文章数量
	c.Data["news"] = 2020
	// 机构数量
	c.Data["mechanism"] = 654
	// 合作数量
	c.Data["handshake"] = 80
}

// 退出登录页面
func (c *Admin) IndexLogout() {
	c.DelSession("user_info")
	c.Redirect("/admin/login", 302)
}

// 登录页面
func (c *Admin) IndexLogin() bool {
	if c.IsAjax() {
		// 获取基本信息
		u := data.User{}
		err := c.get_orm().QueryTable(u).Filter("user_name", c.GetString("uaername")).One(&u)
		if err != nil {
			return c.return_json("数据查询错误，原因：" + err.Error())
		}
		// 密码次数锁定，锁定24小时
		au := "cache_login_admin_count" + c.GetString("uaername")
		if !u.CheckPassword(c.GetString("password")) {
			if bash.CacheCheck(au) {
				if count, err := beego.AppConfig.Int("Webconfig::login_admin_count"); bash.CacheGetInt(au) >= count && err == nil {
					return c.return_json("密码已锁定，请24小时后再次尝试")
				} else {
					bash.CacheSet(au, bash.CacheGetInt(au)+1, bash.TimeDay)
				}
			} else {
				bash.CacheSet(au, 1, bash.TimeDay)
			}
			return c.return_json("密码输入错误")
		}
		// 状态检测
		if u.Status != 0 || !u.IsAdmin {
			return c.return_json("该用户状态异常：" + u.GetStatus())
		}
		c.SetSession("user_info", u)
		c.Data["json"] = u
		return c.return_json()
	}
	return true
}
